﻿using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data;

namespace WSDatos
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
    // [System.Web.Script.Services.ScriptService]
    public class Service : System.Web.Services.WebService
    {
        public Service()
        {

            //Eliminar la marca de comentario de la línea siguiente si utiliza los componentes diseñados 
            //InitializeComponent(); 
        }

        //Convierto las fechas a YYYYMMDD
            public string invierteFecha(string fecha)
            { 
                string[] datos = new string[3];
                datos = fecha.Split('/');
                if (datos[0].Length == 1) datos[0] = "0" + datos[0];
                if (datos[1].Length == 1) datos[1] = "0" + datos[1];

                return ("20" + datos[2] + datos[0] + datos[1]);
            }

        //Servicios de Juan Luis
            [WebMethod(Description = "Obtener todas las facturas")]
            public DataTable ObtenerTodasFacturas(int _cve_cia, int _cve_cte)
            {
                DataTable dtt;
                clsFacturas facturas = new clsFacturas();
                dtt = facturas.ObtenerFacturas(_cve_cia, _cve_cte);
                return dtt;
            }

            [WebMethod(Description = "Obtener todas las facturas canceladas")]
            public DataTable ObtenerTodasFacturasCanceladas(int _cve_cia, int _cve_cte)
            {
                DataTable dtt;
                clsFacturas facturas = new clsFacturas();
                dtt = facturas.ObtenerFacturasCanceladas(_cve_cia, _cve_cte);
                return dtt;
            }
        
            [WebMethod(Description = "Obtener las facturas por fechas")]
            public DataTable ObtenerFacturasPorFechas(int _cve_cia, int _cve_cte, string _fechaInicial, string _fechaFinal)
            {
                DataTable dtt;
                clsFacturas facturas = new clsFacturas();
                dtt = facturas.ObtenerFacturasPorFecha(_cve_cia, _cve_cte, invierteFecha(_fechaInicial), invierteFecha(_fechaFinal));
                return dtt;
            }

            [WebMethod(Description = "Obtener las facturas activas")]
            public DataTable ObtenerFacturasActivas(int _cve_cia, int _cve_cte)
            {
                DataTable dtt;
                clsFacturas facturas = new clsFacturas();
                dtt = facturas.ObtenerFacturasActivas(_cve_cia, _cve_cte);
                return dtt;
            }
            
            [WebMethod(Description = "Obtener el detalle de la factura")]
            public DataTable ObtenerDetalleFactura(int _cve_fac)
            {
                DataTable dtt;
                clsFacturas facturas = new clsFacturas();
                dtt = facturas.ObtenerDetalleFactura(_cve_fac);
                return dtt;
            }

        //Servicios de Jose Luis
            [WebMethod(Description = "Obtener Productos en Stock")]
            public DataTable ObtenerProductos(int cve_num)
            {
                // AQUI LO QUE HAGO ES SACAR LOS PRODUCTOS EN STOCK, DE ACUERDO A LOS DIAGRAMAS DE CASOS DE USO QUE 
                // NOS PASO SANDRA, SI NO ESTAN AL MOMENTO DE INTRODUCIR EL NUMERO DE PRODUCTO, ENTONCES NO AHY EN STOCK
                // PARA MOSTRAR TODOS LOS PRODUCTOS PONEMOS UN CERO, O COMO VEN SE LOS PASO PARA QUE LO CHECKEN
                DataTable dtt;
                clsProductos manejoProd = new clsProductos();
                dtt = manejoProd.ObtenerProductos(cve_num);
                return dtt;
            }
            [WebMethod(Description = "Obtener Productos Descontinuados")]
            public DataTable ProductosDescontinuados()
            {
                DataTable dtt;
                clsProductos manejoProd = new clsProductos();
                dtt = manejoProd.ObtenerProductosDescontinuados();
                return dtt;
            }
            [WebMethod(Description = "Obtener Promociones por Cliente")]
            public DataTable PromocionesCliente(int cve_cte)
            {
                // problemas con el formato de la hora
                DataTable dtt;
                clsPromociones manejoProd = new clsPromociones();
                dtt = manejoProd.ObtenerPromocion(cve_cte);
                return dtt;
            }
            [WebMethod(Description = "Obtener Promociones por Producto")]
            public DataTable PromocionesProductos(int cve_num)
            {
                // problemas con el formato de la hora
                DataTable dtt;
                clsPromociones manejoProd = new clsPromociones();
                dtt = manejoProd.ObtenerPromocionProductos(cve_num);
                return dtt;
            }
            
            //De autenticacion
            [WebMethod(Description = "AutenticaUsuario")]
            public Boolean AutenticaUsuario(string usu, string pass)
            {
                // problemas con el formato de la hora
                bool usuario = false;
                DataTable dtt;
                clsAut manejoProd = new clsAut();
                dtt = manejoProd.ObtenerUsuario(usu, pass);
                if (dtt.Rows.Count > 0)
                {
                    usuario = true;
                }
                return usuario;
            }

            [WebMethod(Description = "AutenticaCliente")]
            public int AutenticaCliente(string usu, string pass)
            {
                // problemas con el formato de la hora
                int cve_cte = 0;
                DataTable dtt;
                clsAut manejoProd = new clsAut();
                dtt = manejoProd.ObtenerCliente(usu, pass);
                if (dtt.Rows.Count > 0)
                {
                    cve_cte = Convert.ToInt16(dtt.Rows[0][0].ToString());
  
                }
                return cve_cte;
            }


            [WebMethod(Description = "AutenticaUsuarioConPermiso")]
            public DataTable AutenticaUsuarioPermisos(string usu, string pass)
            {
                // problemas con el formato de la hora
                DataTable dtt;
                clsAut manejoProd = new clsAut();
                dtt = manejoProd.ObtenerUsuarioConPermisos(usu, pass);
                return dtt;
            }  

        //Servicios de Jose Ramon
            [WebMethod(Description = "Obtener los Pagos de un Cliente")]
            public DataTable ObtenerTodosPagosCliente(int _cve_cte)
            {
                DataTable dtt;
                clsCxpagar pagos = new clsCxpagar();
                dtt = pagos.ObtenerPagosCliente(_cve_cte);
                return dtt;
            }

            [WebMethod(Description = "Obtener los Pagos de una Factura")]
            public DataTable ObtenerTodosPagosFactura(int _no_fact)
            {
                DataTable dtt;
                clsCxpagar pagos = new clsCxpagar();
                dtt = pagos.ObtenerPagosFactura(_no_fact);
                return dtt;
            }

            [WebMethod(Description = "Obtener los Doctos Vencidos del Cliente")]
            public DataTable ObtenerTodosDoctosVencidos(int _cve_cte)
            {
                DataTable dtt;
                clsCxpagar pagos = new clsCxpagar();
                dtt = pagos.ObtenerDoctosVencidos(_cve_cte);
                return dtt;
            }

            [WebMethod(Description = "Obtener los Doctos Activos del Cliente")]
            public DataTable ObtenerTodosDoctosActivos(int _cve_cte)
            {
                DataTable dtt;
                clsCxpagar pagos = new clsCxpagar();
                dtt = pagos.ObtenerDoctosActivos(_cve_cte);
                return dtt;
            }

        //Los servicios de Sandra
            [WebMethod(Description = "Obtener todos los pedidos")]
            public DataTable ObtenerTodosPedidos(int _cve_cia, int _cve_cte, int _cve_ped)
            {
                DataTable dtt;
                clsPedidos pedidos = new clsPedidos();
                dtt = pedidos.ObtenerTodosPedidos(_cve_cia, _cve_cte, _cve_ped);
                return dtt;
            }

            [WebMethod(Description = "Obtener el detalle del pedido")]
            public DataTable ObtenerDetallePedido(int _cve_ped)
            {
                DataTable dtt;
                clsPedidos pedidos = new clsPedidos();
                dtt = pedidos.ObtenerDetallePedido(_cve_ped);
                return dtt;
            }
    }
}